#ifndef HUMAN_H
#define HUMAN_H


#include "GameOpt.h"

class Human : public Entity, SaveLoad
{
public:
	Human(const char inToken='0',Point DesPos=Point(1,1));
	virtual ~Human();

	virtual Point reqMove(Maze &);//give the Human to select movement accordig to the map
	virtual char kind() const; // return KIND_HUMAN const, for main program to identity the Entity type
	
	unsigned int getExperience() const;
	virtual unsigned int incExperience(unsigned int iExp);
	unsigned int getLevel() const;
	unsigned int incLevel(unsigned int iLevel=1);
	void incProperty(unsigned int = 1);	//inc one of the player Properties (Power\Defence...) the input number is the Num that the user will see how much properies he have to inc
	
	string getName() const;

	void operator +=(char cPreset); //add Present property to the player

	virtual bool SaveState(ofstream &);
	virtual bool LoadState(ifstream &);

protected:
	unsigned int uiExperience;
	unsigned int uiLevel;
	string strName;
};
#endif
